<?php

namespace app\common\library\Helper;

class Arr extends \think\helper\Arr
{
    /**
     * 根据字段排序
     * @param $array
     * @param $field
     * @param int $sortBy
     * @param int $emptyEnd
     * @return array
     */
    public static function sortByField($array, $field, int $sortBy = SORT_ASC, int $emptyEnd = 0): array
    {
        if ($emptyEnd === 1) { // 空值或0放后面
            $emptyArr  = array_filter($array, function ($v) use ($field) {
                return empty($v[$field]);
            });
            $antherArr = array_filter($array, function ($v) use ($field) {
                return !empty($v[$field]);
            });
            $sort      = array_column($antherArr, $field);
            array_multisort($antherArr, $sortBy, $sort);
            return array_merge($antherArr, $emptyArr);
        } else {
            $sort = array_column($array, $field); // 返回数组中指定的一列
            array_multisort($array, $sortBy, $sort); // 对多个数组或多维数组进行排序
        }
        return $array;
    }
}